<?php
/* +----------------------------------------------------------------------
 * 作	   者: xinglou <xinglou1@foxmail.com>
 +----------------------------------------------------------------------
 * 创建日期：2015-06-24
 +----------------------------------------------------------------------
 * 文件描述：系统选项管理
 +----------------------------------------------------------------------
 * 升级记录：
 +----------------------------------------------------------------------
*/

class GroupsAction extends CommonAction {
	/**
	 * 显示页面
	 */
public function index() {
		$model = new GroupsModel(); 
		
		// 条件检索
		if(!empty($_REQUEST['search_keyword'])) {
			$where['code|name'] = array('like', '%'.$this->_request('search_keyword').'%');
		}
		
		// 分页处理
		import('ORG.Util.Page'); // 导入分页类
		$count = $model->where($where)->count();  // 查询满足要求的总记录数
		$p = $this->_page($model, 'update_date', 'desc');  // 分页所需信息
		$page = new Page($count, $p['listRows']);  // 实例化分页类 传入总记录数和每页显示的记录数
		$data = $model->field("id,
		                        code,
		                        get_field_dict_name('groups', 'type', type) type,
								name,
								remark")
					  ->where($where)
					  ->order("`".$p['order']."` ".$p['sort'])
					  ->limit($page->firstRow.', '.$page->listRows)
					  ->select();
		$this->assign('list', $data);
		$show = $page->show();	// 分页显示输出
		$this->assign('show', $show);	// 绑定分页显示字符串
		$this->display();
	}
	
	 /**
	 * 管理员设置
	 */
	
     public function admin_role(){
	    $groupsid = $this->_request('groupsid');
		$this->assign("groupsid",$groupsid);	// 未处理之前重新绑定，需传递到下一个提交的地址
		// 查询当前分组已授权的管理员
		$model = new GroupsAdminModel();
		$data = $model->where("groupsid = '".$groupsid."'")->getField('userid', true);
		$this->assign('adminIds', implode(',', $data));	// 将页面编号数组用逗号分割成字符串并绑定到前台
		$where[_string] = "id is not null";
		// 查询用户列表
		$page = new UserModel();
		$list = $page->field("id,
							   name")
					 ->where($where)
					 ->order('id')
					 ->select();
		$this->assign('list', $list);
		$this->display();
		
	}
	  /**
	 * 批量进行设置
	 */
		public function set_groups_role() {
			$userid = $this->_request('userid');
			$groupsid = $this->_request('groupsid');
			//$this->error($userid);
			//$this->error($groupsid)
			//die;
			$model = new GroupsAdminModel();
			$model->startTrans();	// 启动事务
			
		// 删掉当前用户的历史管理员设置信息
			if(false === $model->where("groupsid = '".$groupsid."'")->delete()) {
				$model->rollback();		// 回滚事务
				$this->success('历史授权信息删除失败！');
			}
			foreach($userid as $value) {
				$add_data['userid'] = $value;
				$add_data['groupsid'] = $groupsid;
				// 将管理员页面授权信息添加至数据库
				$data = $model->create($add_data, 1);
				if(false !== $data) {
					if(false === $model->add()) {
						$model->rollback();		// 回滚事务
						$this->error('管理员设置失败！');
					}
				} else {
					$model->rollback();		// 回滚事务
					$this->error('管理员设置失败！'.$model->getError());
				}
			}
			$model->commit();	// 提交事务
			$this->success('管理员设置成功！');
		}
	/**
	 * 显示添加页面
	 */
	public function add() {
		
		$this->assign('type_list', set_field_dict_list('groups', 'type'));
		$this->display();
	}
	
	/**
	 * 将添加的信息写入数据库
	 */
	public function insert() {
		$model = new GroupsModel();
		$data = $model->create();
		if(false !== $data) {
			if(false !== $model->add()) {
				$this->success('添加成功', __APP__.'?g=Admin&m=Groups&a=index');
			} else {
				$this->error('添加失败');
			}
		} else {
			$this->error($model->getError());
		}
	}
	
	/**
	 * 显示修改页面
	 */
		public function edit() {
				$id = $this->_request('id');
				$model = new GroupsModel();
				$data = $model->field("id,
				                        code,
				                        type,
										name,
										remark")
							  ->where("id = '".$id."'")
							  ->find();
				$this->assign('list',  $data);
				$this->assign('type_list', set_field_dict_list('groups', 'type'));
				$this->display();
			}
	
	/**
	 * 将修改的信息更新到数据库
	 */
	public function update() {
		$model = new GroupsModel();
		$data = $model->create();
		if(false !== $data) {
			$data = $model->save();
			if(false !== $data) {
				$this->success('修改成功', __APP__.'?g=Admin&m=Groups&a=index');
			} else {
				$this->error('修改失败');
			}
		} else {
			$this->error($model->getError());
		}
	}
	/**
	 * 删除信息
	 */
	public function delete() {
		$deleteId = $this->_request('ids');
		if(!empty($deleteId) && is_array($deleteId)) {
			$model = new GroupsModel();
			$id = implode("','", $deleteId);	// 用','分割id数组，以便于拼装sql语句
			$id = "'".$id."'";	// 拼装sql语句，结果为'firstId','secondId',…
			if($data = $model->where("id in(".$id.")")->delete()) {
				redirect($_SERVER['HTTP_REFERER']);
			} else {
				$this->error('删除失败！');
			}
		} else {
			$this->error('您未选中需要删除的信息');
		}
	}

		
}
?>